\documentclass[11pt]{article}

\usepackage[T1]{fontenc}
\usepackage{mathptmx}
\usepackage{graphicx}
\usepackage{amsthm}
\usepackage{amsmath}
\usepackage{amssymb}
\topmargin 0.0in
\setlength{\textwidth} {420pt}
\setlength{\textheight} {620pt} 
\setlength{\oddsidemargin} {20pt}
\setlength{\marginparwidth} {72in}

\usepackage{fancyhdr} 
\usepackage{url}

% set it so that subsubsections have numbers and they
% are displayed in the TOC (maybe hard to read, might want to disable)

\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{3}

% define widow protection

\def\widow#1{\vskip #1\vbadness10000\penalty-200\vskip-#1}

\clubpenalty=10000  % Don't allow orphans
\widowpenalty=10000 % Don't allow widows

% this should give me the ability to use some math symbols that 
% were available by default in standard latex (i.e. \Box)

\usepackage{latexsym}

% define a little section heading that doesn't go with any number

\def\littlesection#1{
\widow{2cm}
\vskip 0.5cm
\noindent{\bf #1}
\vskip 0.0001cm 
}

\pagestyle{fancyplain}

\newcommand{\tstamp}{\today}   
\renewcommand{\sectionmark}[1]{\markright{#1}}
\lhead[\Section \thesection]            {\fancyplain{}{\rightmark}}
\chead[\fancyplain{}{}]                 {\fancyplain{}{}}
\rhead[\fancyplain{}{\rightmark}]       {\fancyplain{}{\thepage}}
\cfoot[\fancyplain{\thepage}{}]         {\fancyplain{\thepage}{}}

\newlength{\myVSpace}% the height of the box
\setlength{\myVSpace}{1ex}% the default, 
\newcommand\xstrut{\raisebox{-.5\myVSpace}% symmetric behaviour, 
  {\rule{0pt}{\myVSpace}}%
}

% leave things with no spacing extra spacing in the final version of the paper
\renewcommand{\baselinestretch}{1.0}    % must go before the begin of doc

% suppress the use of indentation for a paragraph

\setlength{\parindent}{0.0in}
\setlength{\parskip}{0.1in}

\begin{document}

%% \begin{abstract}

%%   Try

%% \end{abstract}

% handle widows appropriately
\def\widow#1{\vskip #1\vbadness10000\penalty-200\vskip-#1}

% build the title section

\makeatletter

\def\maketitle{%
  %\null
  \thispagestyle{empty}%
  %\vfill
  \begin{center}%\leavevmode
    %\normalfont
    {\Huge \@title\par}%
    %\hrulefill\par
    {\normalsize \@author\par}%
    \vskip .4in
%    {\Large \@date\par}%
  \end{center}%
  %\vfill
  %\null
  %\cleardoublepage

  }

\makeatother

\vspace*{-1.1in}
\title{Twitter DBA Requirements Document}

% build the author section

\author{Matthew Hajduk, Brian Graham, Mackenzie Jordan, Anton Kotelyanski, Shane Regel\\
Department of Computer Science\\
Allegheny College \\
\vspace*{.1in} \today \\ \vspace*{.1in}
}

% use the default title stuff
\maketitle

\vspace*{-.4in}
\section{Introduction}

\subsection{Purpose of Product}
Twitter is a microblogging service that allows you to send 140-character messages.Many Twitter clients allow you to send and receive tweets and search for trending topics, few give you the ability to search and analyze your entire tweet history. It is particularly difficult to implement a Twitter client that downloads your entire history of tweets because of the way in which Twitter rate limits its application programming interface. The goal of this project is implement a complete Twitter analytics system. 

\subsection{Outline of the rest of the Requirements Document}
2.    General Description of the Product\\
2.1   Context of Product\\
2.2   Five Analyses\\
3.    Other Requirements\\
4.    Alternative Interface\\

\vspace*{-.4in}

\section{General Description of Twitter DBA}
The program accepts as input the Zip file that a Twitter user downloads by following the instructions on the site https://blog.twitter.com/2012/your-twitter-archive. The program then parses all of the tweets in the Zip file and stores them in a relational database so that they can be subject to further analysis. The analytics tool allows the user to connect to the Twitter servers and refresh the
program's tweet database so that it includes all of the new tweets since the download of the Zip file
from Twitter. The system also allows the user to specify a new Zip file for reloading
into the local database and reinitialize the database by clearing out any existing tweets. Finally the analytyics tool provides five analyses of the users tweets, described below.  


\subsection{Context of the Product}
The analytics tool is to be used by the user so they may better understand aspects of their twitter history and learn more about their tweets and interactions with other users.

\subsection{Five Analyses}

The five analyses provided by the analytics tool are:
\begin{enumerate}
\item Who retweeted the most - returns the information of twitter account who retweets the user the most 
\item Retweets to favorites - ratio of the number of retweeted tweets to the number of favorited tweets 
\item Most retweeted tweet
\item Most favorited tweet
\item DB rating - ratio of the number of hastags to the number of tweets
\end{enumerate}

After beginning our programming and using the CSV file provided by the twitter archive we had to change a couple of our analyses. Due to the information provided in the CSV file we were unable to provide the analyses retweets to favorites and most favorited tweet. This is an example of a change in requirements due to design constraints. We raplaced these two analyses with 
\begin{enumerate}
\item Who we retweeted most
\item Spelling rating
\end{enumerate}

\section{Other Requirements}
\begin{enumerate}
\item One version of the system must be implemented in Java
\item JCommander must be used to parse command line arguements
\item SQLite3 for tweet storage
\item JUnit test cases with JaCoCo coverage monitor
\item JDepend to test code quality
\item JavaNCSS to test code quality
\item MAJOR to test test suite effectiveness
\item Ant build system
\end{enumerate}

\section{Alternative Interface}
As an alternative user interface to simple command line arguements the Leap Motion sensor will be used to provide the user the ability to call the five analyses function with hand gestures. 

\end{document}

